home *** CD-ROM | disk | FTP | other *** search
- ; netSpeechD by (c) Cyborg 2001
- ;
- ; (c) 1999 Cyborg
-
- {* Include sys:coder/preass/Options.p *}
-
- {* String: Version="$VER: speechd 1.0 Cyborg 2001"*}
-
- {* Structure sockaddr_in(),sin_len(BYTE),sin_family(BYTE),sin_port(WORD)
- sin_addr(LONG),sin_zero[8]*}
-
- {* Structure Sockaddr(),SA_Len(BYTE),SA_Family(BYTE),SA_Data[14]*}
-
- {* Structure Hostent,H_name(CHAR),h_aliases(APTR),h_addrtype(LONG)
- h_length(LONG),H_addr_list(CHAR)*}
-
- {* Structure servent,s_name(CHAR),s_aliases(APTR),s_port(WORD),s_proto(CHAR)*}
-
- {* Const AF_INET=2,INADDR_ANY=0
- Sock_STREAM=1
- SOCK_DGRAM=2
- FIONBIO=$8004667e*}
-
- {* incVar: Addr,Zeiger*}
-
- {* NewProc=Fillbuffer[][A0,d0,d1]*}
- {* NewProc=getFilename[][]*}
- {* NewProc=ASC2Zahl[][a5]*}
-
- GetSigs[]:
- Signals=SetSignal(0,0)
- Signals==Signals$F000
- {* Return Signals*}
-
- FillBuffer[a0,d0,d1]:
- subq.l #1,d1
- .l1:move.b d0,(a0)+
- dbra d1,.l1
- rts
-
- {* IncBlock: Portname,20*}
-
- Start:
- UsePort==21846
- Filename=="21846"
- If GetFilename()#0
- {
- UsePort=asc2zahl(&Filename)
- }
- Portname=="speechd."+Filename
- If FindPort(Portname)#0
- {
- printf("Dämon läuft schon.\n")
- {* return *}
- }
- If (MPort=PortUp(Portname))=0
- {
- Printf("speechd Port NICHT VERFÜGBAR!\n")
- {* Return 0*}
- }
- {* FLUSH *}
- DeineNummer==0
- Printf("speechd gestartet\n")
-
- If (socket=TCP_Socket(AF_INET,SOCK_DGRAM,0))#-1
- {
- #AF_Inet=>sockaddr_in.sin_family
- UsePort=>sockaddr_in.sin_port
- #INADDR_ANY=>sockaddr_in.sin_addr
- #16=>sockaddr_in.sin_len
- ret=TCP_Bind(Socket,&Sockaddr_in,sizeof(sockaddr_in))
- If Ret=-1
- {
- Printf("speechd - Bind-Error \n")
- TCP_CloseSocket(Socket)
- PortDown(mPort)
- {* Return 0*}
- }
- While GetSigs()=0
- {
- Sockaddrlen==16
- {* incblock: zwischenpuffer,5000*}
- Fillbuffer(&Zwischenpuffer,0,5000)
- res1=TCP_RecvFrom(Socket,&ZwischenPuffer,3000,0,&Sockaddr_in,&sockaddrlen)
- res2=TCP_Errno()
- If res2=0 or res1>-1
- {
- If (sh=open("speak:",#MODE_OLD))#0
- {
- Write(SH,&Zwischenpuffer,res1)
- close(SH)
- }
- }
- If ret=-1
- {
- Delay(25)
- RES=TCP_Errno()
- Printf("speechd - Accept-Error %ld\n",*res)
- }
- }
- {* FLUSH *}
- Printf("speechd - Dämon beendet sich jetzt\n")
- TCP_CloseSocket(Socket)
- }
- PortDown(mPort)
- {* Return *}
-
-
- GetFilename:
- {* IncBlock: Filename,256*}
- {* IncVar: NextArg*}
- cmpi.l #0,laenge
- beq .l13
- cmpi.l #1,laenge
- beq .l13
- suba.l a2,a2
- suba.l a1,a1
- Move.l Adresse,a0
- .l1: cmpi.b #`"`,(a0)
- beq .l10
- cmpi.b #` `,(a0)+
- beq .l1
- lea -1(a0),a1
- .l2: cmpi.b #`"`,(a0)
- beq .l11
- cmpi.b #$0a,(a0)
- beq .l12
- cmpi.b #$00,(a0)
- beq .l12
- cmpi.b #` `,(a0)+
- bne .l2
- Lea -1(a0),a2
- .l3: suba.l a1,a2
- move.l A0,NextArg
- Copymem(a1,#Filename,a2)
- Move.l a2,d0
- rts
- .l10: lea 1(a0),a1
- movea.l a1,a0
- bra .l22
- .l11: move.l a0,a2
- bra .l3
- .l12: move.l a0,a2
- bra .l3
- .l13: moveq.l #0,d0
- RTS
- .l22: cmpi.b #`"`,(a0)
- beq .l11
- cmpi.b #$0a,(a0)
- beq .l12
- cmpi.b #$00,(a0)
- beq .l12
- lea 1(a0),a0
- bne .l22
-
- CountString2[a0]:
- move.l a1,-(Sp)
- move.l a0,a1
- .l1: cmpi.b #$0a,(a1)
- beq .l2
- cmpi.b #",",(a1)
- beq .l2
- cmpi.b #" ",(a1)
- beq .l2
- cmpi.b #$00,(a1)+
- bne .l1
- lea -1(a1),a1
- .l2: sub.l a0,a1
- move.l a1,d0
- move.l (sp)+,a1
- RTS
-
- ASC2Zahl[a5]:
- {* IncVar: Potenz*}
- Countstring2(a5)
- move.l d0,d7
- subq.l #2,d7
- move.l #1,d0
- cmpi.w #$FFFF,d7
- beq .la
- .l0:mulu.l #10,d0
- dbra d7,.l0
- .la:move.l d0,d6
- moveq.l #0,d1
- move.l a5,a0
- move.b #"+",d5
- .l1:moveq.l #0,d0
- move.b (A0)+,d0
- cmpi.b #"-",d0
- bne .l2
- move.b d0,d5
- Divs.l #10,d6
- bra .l1
- .l2:subi.b #$30,d0
- andi.l #$FF,d0
- Muls.l d6,d0
- divs.l #10,d6
- add.l d0,d1
- cmpi.l #0,d6
- bne .l1
- lea 1(a0),a0
- ; move.l a0,NextArg
- move.l d1,d0
- cmpi.b #"+",d5
- beq .l3
- neg.l d0
- .l3:RTS
-
-